The output devices of computers often include bitmap graphics devices. A bitmap graphics device typically includes a graphics adapter, which has a display memory, and a display screen. The bitmap graphics device inputs a bitmap to be displayed and then displays that bitmap on the display screen. A bitmap is a matrix of bits that defines an image that is to be displayed in a rectangular area on a display screen. Each bit in a bitmap corresponds to one picture element (pixel) on the display screen. To display computer output data, a bitmap graphics device reads the bitmap stored in the display memory and renders the corresponding image on the display screen. If a bit in the display memory is 1 then the bitmap graphics device turns on the corresponding, pixel on the display screen. If a bit in the display memory is 0, then the bitmap graphics device turns off the corresponding pixel on the display screen. By changing the contents of the display memory for instance, by loading a new bitmap, a computer program can effect a change on the display screen.
A computer program typically generates a bitmap in program memory, and then copies the bitmap to the display memory. Copying from program memory to display memory can be relatively time-consuming because bitmaps are often quite large and can contain one million or more bits. To improve performance and facilitate computer programming typical graphically-oriented operating systems provide routines that are optimized to copy bitmaps from program memory to display memory. These routines are known as bit block-transfer (bitBLT) routines.
In general, these bitBLT routines can read as input a source bitmap and a destination bitmap. which is typically in display memory. These bitBLT routines copy the source bitmap to the destination bitmap in an efficient manner because bitBLT routines are optimized to copy a computer word of data at a time, rather than just a single bit at a time. A computer word is a number of bits that the computer operates on as a unit which typically comprise 8, 16 or 32 bits.
In conventional graphical user interfaces, it is necessary for a graphics controller to combine these different bitBLT images so that a composite image can be produced for display on a display screen which is typically a cathode ray tube (CRT) or computer monitor. Simple examples of composite images are a cursor appearing, on top of the background display, or text being displayed on top of a motion video image. Similarly, a Windows.TM.-based application displays composite images when running multiple windows concurrently. Multimedia display systems also produce composite images when overlaying real time video amongst other multimedia display images. All of these examples require complex processing because numerous comparisons must be evaluated with each refresh cycle to determine how to display the resultant composite image properly.
Conventional graphics controllers frequently hard code these image composition features into their processors. Therefore, these features work in a very limited number of ways, many times with the only programmability provided being the ability to turn a specific feature on or off. This hard coding approach does not offer much flexibility, and so problems arise when the mixing of images is sought to be accomplished differently than originally hard coded.